package com.tengju.user.infrastructure.repository.convert;

import com.tengju.user.domain.model.archive.letax.LetaxAccountId;
import com.tengju.user.domain.model.archive.letax.LetaxSnapshot;
import com.tengju.user.domain.model.archive.letax.LetaxSnapshotId;
import com.tengju.user.domain.model.user.UserIdCode;
import com.tengju.user.infrastructure.persistence.mybatis.dataobject.LetaxRegisteredReturnDO;

public class LetaxSnapshotConvert {

    public static LetaxRegisteredReturnDO convert(LetaxSnapshotId letaxSnapshotId,
            LetaxSnapshot snapshot) {
        if (letaxSnapshotId == null || snapshot == null){
            return null;
        }
        LetaxRegisteredReturnDO convert = convert(snapshot);
        convert.setId(letaxSnapshotId.getValue());
        return convert;
    }

    public static LetaxRegisteredReturnDO convert(LetaxSnapshot snapshot) {
        if (snapshot == null){
            return null;
        }
        LetaxRegisteredReturnDO letaxRegisteredReturnDO = new LetaxRegisteredReturnDO();
        letaxRegisteredReturnDO.setIdCode(snapshot.getIdCode().getValue());
        letaxRegisteredReturnDO.setRegisteredId(snapshot.getRegisteredId().getValue());
        letaxRegisteredReturnDO.setMerchantid(snapshot.getMerchantId());
        letaxRegisteredReturnDO.setMerchantname(snapshot.getMerchantName());
        letaxRegisteredReturnDO.setMerchanttaxnumber(snapshot.getMerchantTaxNumber());
        letaxRegisteredReturnDO.setLicenseurl(snapshot.getLicenseUrl());
        letaxRegisteredReturnDO.setLicensecopyurl(snapshot.getLicenseCopyUrl());
        letaxRegisteredReturnDO.setName(snapshot.getName());
        letaxRegisteredReturnDO.setIdcardno(snapshot.getIdCardNo());
        letaxRegisteredReturnDO.setPhonenumber(snapshot.getPhoneNumber());
        letaxRegisteredReturnDO.setEmail(snapshot.getEmail());
        letaxRegisteredReturnDO.setPoliticalappearance(snapshot.getPoliticalAppearance());
        letaxRegisteredReturnDO.setDegreeeducation(snapshot.getDegreeEducation());
        letaxRegisteredReturnDO.setStatecode(snapshot.getStateCode());
        letaxRegisteredReturnDO.setRejecttype(snapshot.getRejectType());
        letaxRegisteredReturnDO.setRejectreason(snapshot.getRejectReason());
        letaxRegisteredReturnDO.setIffaceauthenticate(snapshot.getIfFaceAuthenticate());
        letaxRegisteredReturnDO.setOpeningdate(snapshot.getOpeningDate());
//        letaxRegisteredReturnDO.setMerchantaddress();
        return letaxRegisteredReturnDO;
    }

    public static LetaxSnapshot convert(LetaxRegisteredReturnDO registeredReturnDO) {
        if (registeredReturnDO == null){
            return null;
        }
        return new LetaxSnapshot(
                new LetaxSnapshotId(registeredReturnDO.getId()),
                new UserIdCode(registeredReturnDO.getIdCode()),
                registeredReturnDO.getMerchantid(),
                registeredReturnDO.getMerchantname(),
                registeredReturnDO.getMerchanttaxnumber(),
                registeredReturnDO.getLicenseurl(),
                registeredReturnDO.getLicensecopyurl(),
                registeredReturnDO.getName(),
                registeredReturnDO.getIdcardno(),
                registeredReturnDO.getPhonenumber(),
                registeredReturnDO.getEmail(),
                registeredReturnDO.getPoliticalappearance(),
                registeredReturnDO.getDegreeeducation(),
                registeredReturnDO.getStatecode(),
                registeredReturnDO.getRejecttype(),
                registeredReturnDO.getRejectreason(),
                registeredReturnDO.getIffaceauthenticate(),
                registeredReturnDO.getOpeningdate(),
                new LetaxAccountId(registeredReturnDO.getRegisteredId()));
    }
}
